Hexo 默认使用 “hexo-renderer-marked” 引擎渲染网页,该引擎会把一些特殊的 markdown 符号转换为相应的 html 标签,比如在 markdown 语法中,下划线 ‘_’ 代表斜体,会被渲染引擎处理为 <em>
标签。这与 latex 公式的语法相冲突,所以在 Melody 主题中将 marked 渲染器换成了 Kramed 网页渲染器。
1 | npm uninstall hexo-renderer-marked --save |
但是 Kramed 渲染器也有问题,本来在 typora 中显示得好好的公式:
在网页中变成了这样:
真是惨不忍睹==
找了很久解决办法,才在 Kramed 的官方文档发现,原来 Kramed 改变了行内公式的语法,在美元符号的两侧加上点才表示行内公式:
1 | `$\Latex$` |
如果需要在行内代码中包含美元符号,则需要加上转义符:
1 | `\$ code \$` |
每次都要加点太麻烦,能不能将语法改回来呢?在这篇博文找到灵感。
进入 hexo 的安装目录 /node_modules/hexo-renderer-kramed/lib/renderer.js
,发现这么一段:
1 | // Change inline math rule |
我们将正则式中的两点去掉变成:
1 | /\$(.*?)\$/g |
这样 Kramed 就能识别两个 $ 之间的为行内公式了!但是要注意行内公式不可以打回车,否则又无法识别!
重启 Hexo:
1 | hexo clean |
果然恢复了正常!